This invention relates generally to electronic design automation for circuit designs, and more particularly to using user input from waveforms to capture and index the behaviors of a circuit design as well as applications for the indexed behaviors.
With the increasing size and complexity of electronic circuits, design quality and productivity are becoming even more difficult to achieve. This is complicated by a number of factors. For example, circuit designs are built incrementally, but there is no practical method for verifying design changes incrementally. During the design process, even relatively insignificant changes to a circuit design may cause unintended side-effects. Due to the complexity of typical designs, the cost of uncovering a design bug increases non-linearly down the design flow.
Existing solutions for RTL designers include, for example, directed testing and formal assertion based verification. Directed testing is not within the typical designer's area of expertise, so the effort is non-trivial, even to achieve just a little verification coverage. Moreover, there is no persistent return-on-investment because the directed testing effort is usually thrown away. The other option, formal assertion based verification, is difficult to deploy because most designers lack knowledge of assertions.
Circuit designers have attempted to make their circuit designs more understandable in a number of ways. For example, when creating the executable description of a circuit design, designers sometimes place textual comments within the executable description of the circuit design, or they write a textual specification to go along with the circuit design. These techniques suffer from the severe limitation of being static. The designer must rely on the original writer to capture and maintain the textual description, and its accuracy depends on whether the writer has understood the executable description correctly and whether the static textual description was modified accordingly when the executable description is modified. If the original writer did not capture the exact aspect that the user is interested in, the user has no way to figure out whether the things he or she would like to do with the executable description can be done at all, and if so, how it can be done.
Since the specification can easily go out of date with the latest version of the design, the communication on design behaviors is typically supplemented by information received through hallway conversation, email, white-board discussion. These ad hoc methods of understanding a circuit design are clearly not efficient or reliable. Accordingly, there exists a need for improved tools to help circuit designs understand and work with the complex circuit designs that exist today.